<template>
  <div>
    <van-nav-bar
  title="黑马头条-登录"

/>

<!-- submit：提交并通过校验触发的事件 -->
<van-form @submit="onSubmit">
  <van-field
    v-model="mobile"
    name="mobile"
       required
    label="手机号"
    placeholder="请输入手机号"
    :rules="[{ required: true, message: '请输入正确的手机号' }]"
  />
<!-- rules表单的校验规则 -->
  <van-field
    v-model="password"
    type="password"
       required
    name="code"
    label="验证码"
    placeholder="请输入6位验证码"
    :rules="[{ required: true, message: '请输入6位验证码' }]"
  />

  <!-- native-type原生 button 标签的 type 属性（submit点它可以提交所在的表单） -->
  <div style="margin: 16px;">
    <van-button round block type="info" native-type="submit"
    :loading = "buttonIsLoding" :disabled = "buttonIsLoding" loading-text="登录ing">登录</van-button>
  </div>
</van-form>
  </div>

</template>

<script>
import { mapActions } from 'vuex'

export default {
  name: 'HM_Login',
  data () {
    return {
      mobile: '13888888888',
      password: '246810',
      buttonIsLoding: false // 控制按钮是否进入加载状态（true进入。false不进入）
    }
  },
  // values是van-form帮你收集的参数名name值和输入框值的对象
  methods: {
    ...mapActions(['loginActions']), // 相当于在原地留下下一个loginActons函数（注入到当前组件methods选项中）
    async onSubmit (values) {
      console.log('submit', values)
      this.buttonIsLoding = true // 按钮开始转圈
      try {
        const res = await this.loginActions(values)// 调用action里方法 发起请求去
        console.log(res)
        this.$notify({ type: 'success', message: '登录成功' })

        // 路由跳转页面的两种方式
        // this.$router.push()产生历史记录可以回退 A-B-C
        // this.$router.replace()则是替换当前路由，无法退回 A-> C
        // 跳转到Layout页面
        this.$router.replace({
          path: '/layout'
        })
      } catch (err) {
        this.$notify({ tyep: 'danger', message: '登录失败，请检查手机号和验证码' })
      }

      // 如果成功，cath里不走，会执行try+catch下面的代码
      // 如果失败，catch{}里执行后，也会继续执行try+catch下面的代码
      this.buttonIsLoding = false // 按钮停止转圈
    }
  }
}
</script>

<style scoped>
.van-nav-bar{
   background: #007bff;
}

/* /deep/ 就是把data-v-hash值选择器写到类名的前面 */
::v-deep .van-nav-bar__title{
color: white;
}

</style>
